﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using BLL.Exceptions;
using Common;

namespace BLL
{
    public abstract class BaseBLL
    {

        protected static bool HandleException(Exception pException)
        {
            bool bExceptionHandled = false;
            if (pException is SqlException)
            {
                SqlException sEx = pException as SqlException;
                if (sEx.Errors.Count > 0) // assume the interesting stuff is in the first error
                {
                    switch (sEx.Errors[0].Number)
                    {
                        case 547: // foreign key violation
                            string wMensaje = sEx.Errors[0].Message;
                            string wNombreTabla = wMensaje.BetweenOf("dbo.", "\"");
                            throw new BLLException(string.Format("No se puede concretar la operación porque existen elementos relacionados en tabla {0}", wNombreTabla), sEx);
                            
                        case 2601: // primary key violation
                            throw new BLLException("No se puede continuar debido a la existencia de elementos duplicados", sEx);
                            
                        default:
                            break;
                    }
                }
                bExceptionHandled = true;
            }

            return bExceptionHandled;

        }

    }
}
